從前面的說明,我們提過Feature Crosses可以有效加強線性模型的效果;而它的本質就是為我們帶來非線性的特徵。
適度地加入新特徵,就有機會讓模型跟實際問題更接近,當然預測的效果就可以更好。
當初就提到這跟神經網路有所相關,又該怎麼解釋呢?
神經網路除了可以分成輸入層、隱藏層和輸出層外,每層的神經元還可以再分成兩個部分:轉換函數和活化函數。
轉換函數繼續執行不同基底空間的轉換,屬於線性系統。
活化函數則提供了不同的非線性轉換,可以選擇Sigmoid函數、tanh函數,或者是目前相當普遍的ReLU函數。
利用非線性的特性,可以針對不同的區域給予表現上的抑制或擴張,因此來達到所謂活化的功能。
不過,基於現今神經網路在調整權重的方法採用梯度下降,活化函數有時候會出現不可微分的特性。
這時候就要自行設定,或利用良好的數值逼近運算,但不用擔心,這裡就是TensorFlow的強項了。
現今神經網路能夠調整權重,大致上基於多倫多大學教授Geoffrey Hinton所提出的反向傳播法,而這個方法對於區域最佳解不容易離開。
記得Learning Rate選擇的難題嗎?當越來越靠近區域低點時,大部分的最佳化方法會讓Learning Rate更小,使運算結果穩定,但這也是更不容易離開並找到全域最佳解的問題。
三個由於梯度下降法產生的常見問題:
要和雜訊相比喔
學者們已經在嘗試不同方法改進神經網路,如果要繼續用梯度下降就要透過反覆的資料驗證來解決這些可能的問題。
經過這連續30天,重新看機器學習好像又問了自己很多遍問題;如何正確寫出來或是重新用不同的寫法Estimator
之類的,感覺發展實在太快了啦!
只有自己去收集需要的資料,思考問題並把問題數據化,看過整體再下結論。
一切都不容易,但當我們走在這條路上也是不簡單!
我會繼續在這條路上,也希望未來有機會把這些學習成果應用出來(可以在GCP上就太好了)!